Инструкция по созданию серверного приложения на nodejs + express + postgresql

Установка Node.js

Windows:

Для того чтобы начать, зайдите на страницу загрузки Node.js (https://nodejs.org/en/download/). Выберите установщик, который вы хотите скачать и установить.

После запускаем установщик и пошагово завершаем установку.

CentOS:

Для установки Node.js нужно подключиться к серверу по протоколу SSH. После этого, нужно установить последнюю версию .nodejs из репозиториев. Для этого:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ yum update

//Устанавливаем группу Development Tools
$yum -y groupinstall "Development Tools"

//Вводим команду для подключения к серверу и создания нескольких параллельных сессий
$ yum -y install screen

//Переходим в папку /usr/src и загружаем архив с Node.js
$ cd /usr/src
$ wget http://nodejs.org/dist/v0.10.4/node-v0.10.4.tar.gz

//Извлекаем файлы из архива и помещаем в каталог
$ tar zxf node-v0.10.4.tar.gz
$ cd node-v0.10.4

//Cоздаем установочный файл и запускаем
$ make
$ make install

Node.js установлен. По умолчанию его двоичный код лежит в /usr/local/bin/node.

Ubuntu

Для установки Node и npm при помощи apt-get, запустите следующие команды:

1
2
3
4
$ sudo apt-get update  
$ sudo apt-get install nodejs
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
$ sudo apt-get install npm

Если вы все еще хотите использовать apt-get, но вам необходима наиболее свежая версия Node, стоит воспользоваться иным методом.

Он очень похож на предыдущий, но мы будем запускать скрипт, указывающий менеджеру пакетов, где хранится последняя версия.

1
2
3
4
5
6
7
8

$ curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ sudo ln -s /usr/bin/nodejs /usr/bin/node

```

Чтобы проверить, что у вас установлена Node.js и проверить версию, выполните:

$ node –version

1
2

Чтобы начать работу, выполните в командной строке:

$ node

1
2
3
4

### Установка зависимостей.

Вы можете интерактивно генерировать файл *package.json* с помощью команды *npm init* в терминале.

$ npm init

1
2
3
4

После запуска команды вас попросят ввести некоторые данные. После их получения *package.json* будет автоматически сгенерирован и помещен в папку вашего приложения.

Если какие-либо зависимости не установлены, то добавить их в своё приложение можно следующей командой:

npm install[module name] –save

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


### Установка PostgreSQL.

PostgreSQL является очень популярным сервером баз данных, поэтому присутствует в официальных репозиториях Ubuntu. Однако в PPA разработчиков PostgreSQL можно найти самую свежую версию.

**Windows**

Скачать PostgreSQL можно со страницы загрузки официального сайта вот здесь - http://www.postgresql.org/download/windows/

Загрузить установщик, выбрав версию, подходящую под разрядность системы и следовать шагам, предлагаемым установщиком.

**CentOS**

Для установки самой свежей версии необходимо добавить официальный репозиторий следующей командой:

$ sudo rpm -Uvh http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

1
2
После того как репозиторий будет добавлен к вашей системе вы можете перейти к установке программы. 
Установка Postgresql CentOS выполняется командой:

$ sudo yum install postgresql96-server postgresql96

1
Сразу после установки Postgresql сервер еще не готов к использованию, нужно инициализировать необходимые базы данных. Для этого выполните:

$ /usr/pgsql-9.6/bin/postgresql96-setup initdb

1
2
3
4

**Ubuntu:**

Добавьте репозиторий PostgreSQL в системный список источников:

$ sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ lsb_release -cs-pgdg main” >> /etc/apt/sources.list.d/pgdg.list’

1
и добавьте для него ключ:

$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

1
Это позволит при обновлении пакетов получать наиболее свежие версии.

initdb -U postgres -D data
pg_ctl -D data start
psql -U postgres

1
2
3
4
5

Здесь *postgres* - это имя пользователя, лучше его указать по умолчанию, для начала, а *data* - директория, где будут храниться базы, можно указать любую удобную.
После чего *pg_ctl* запускает PostgreSQL (с указанием директории с базами).

По окончанию, мы должны увидеть приветственную консоль:

postgres=#

1
2
3
4

### Установка Express.

Чтобы установить Express и добавить в список зависимостей, необходимо перейти в папку с проектом и оттуда запустить команду:

$ npm install express –save

1
2
3
4

### Создание простого серверного приложения.

Создайте директорию, где будет храниться ваш проект.

$ mkdir nodejs-express-postgresql/
$ cd nodejs-express-postgresql/

1
Теперь необходимо иниицировать наше приложение:

$ npm init -y

1
2
3
4

Эта команда создаст *package.json* со стандартными настройками конфигурации.

Теперь создадим файл с нашим приложением.

$ touch app.js

1
2

Теперь набоходимо подключить и настроить Express.

const express = require(‘express’);
const bodyParser = require(‘body-parser’);

// Set up the express app
const app = express();

// Setup a default catch-all route that sends back a welcome message in JSON format.
app.get(‘*’, (req, res) => res.status(200).send({
message: ‘Welcome, my frined.’,
}));

module.exports = app;

1
2

Теперь если мы запустим наш сервер

npm run start:dev

1
2
3
4
5
6
7

И перейдем по http://localhost:8000/, то у нас появится сообщение *Welcome, my friend.*

Теперь необходимо подключить нашу базу данных.
Мы будем сразу же использовать пул, а не отдельные подключения. Это распространенная практика, тем более для PostgreSQL. Пул позволяет хранить несколько соединений, тем самым не тратя время на их создание и не заниматься их менеджементом.

Сперва настроим зависимость, потом добавим подключение к нашей базе.

const Pool = require(‘pg’).Pool;

1
По умолчанию в *PostgreSQL* нет пароля, а стандартным портом является - 5432.

const config = {
user: ‘postgres’,
host: ‘localhost’,
database: ‘users’,
password: ‘’,

};

const pool = new Pool(config);

1
2

Теперь только остаётся сделать нашу функцию, которая будет показывать все записи из таблицы *users*.

(async () => {
const client = await pool.connect()
try {
const res = await pool.query(“select * from users”);
console.log(res.rows[0])
} finally {
client.release()
}
})().catch(e => console.log(e.stack))

```

Теперь при перезагрузке нашего сервера можно будет увидеть результат.

Материалы и полезные ссылки, используемвые в работе.

PostgreSQL:
https://node-postgres.com/
http://expressjs.com/ru/guide/database-integration.html

Node.js:
https://nodejs.org/en/
https://medium.com/devschacht/node-hero-chapter-1-239f7afeb1d1
https://node-postgres.com/features/pooling

Express:
http://expressjs.com/ru/

NPM:
https://www.npmjs.com/